可验证计算

最安全的区块链隐私保护方案是在保证最敏感的隐私数据不离开本地存储的同时,让区块链能够利用到该数据的价值。区块链公开透明的特性在实际商用场景落地过程中往往限制了业务的扩展,为了应对实际场景中隐私保护的需求,平台提供TEE账本加密、零知识证明两种隐私保护方案。

TEE账本加密

账本加密针对用户的账户信息和业务数据进行按需加密操作,将密钥存储在TEE硬件可信执行环境中,账本数据通过TEE的密钥进行加解密,由于在整个过程中账本加密的密钥都在TEE中而没有向外暴露,所以可以保证账本数据加密的安全性;而且平台会确保硬件执行环境的安全性,这一层面外部用户无需感知;另外如果需要参与方和审计方具有权限查看数据,则可通过赋予其数据访问权限,通过密码学算法如哈希校验等进行对加密信息的有效性和正确性验证。

账本加密可应用于密钥存储和数据加密两种场景。

密钥存储,密钥存储某种程度上可以理解为CPU担任了UKey的功能。他是将关键密钥信息托管到可信计算环境中不再导出以便保护关键密钥。这里能够保存的密钥包括平台ecert、rcert的私钥,特殊用途的密钥等,最终的密钥保存在配置文件指定的加密文件中。密钥存储的子功能主要包括:密钥生成、加密解密、密钥导入、签名。

数据加密,数据加密是利用了密钥存储的加密解密的功能,在此基础上专门提供特定于节点的密钥加密功能。提供公共的一组加密解密接口供对共识数据加密使用。密钥对不同的节点是不同的而且只有一份拷贝,但是考虑到加密的数据在其他节点也能找回,因此不用担心密钥丢失的问题。

零知识证明

零知识证明是指证明方能够在不向验证方提供任何有用的信息的情况下,使验证方相信某个陈述是正确的。证明者(prover)有可能在不透露具体数据的情况下让验证者(verifier)相信数据的真实性。零知识证明可以是交互式的,即证明者面对每个验证者都要证明一次数据的真实性;也可以是非交互式的,即证明者创建一份证明,任何使用这份证明的人都可以进行验证。平台零知识证明目前支持groth16算法和plonk算法,并支持使用bn254曲线,对setup签名可以使用secp256曲线。另外,支持intel sgx 硬件的方式,实现将wasm核心执行引擎接入sgx,并实现ecall核心功能、远程证明模块以及计算验证模块。

零知识证明有三个基本特征,即:

  • 完整性 :如果statement为true,则诚实的验证者可以相信诚实的证明者确实拥有正确的信息。
  • 可靠性 :如果statement为false,则任何不诚实的证明者都无法说服诚实的验证者相信他拥有正确的信息。
  • 零知识性 :如果statement为true,则验证者除了从证明者那里得知statement为true以外,什么都不知道。